// pages/shopping/shopping.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    car: [],
    check: false,
    // 定义总价的变量
    priceAll: 0,
    total_pirce: 0, //商品的总价格
    num: 0, //所选商品的数量
    good_one: []
  },
  /**
   * 生命周期函数--页面隐藏与显示（页面重读加载）
   */
  onShow: function (options) {
    this.getcarlist()
  },
  getcarlist() {
    let car = wx.getStorageSync("car") || [];
    this.setData({
      car,
    })
  },
  // 反选
  addButtonClick: function (e) {
    var that = this;
    const index = parseInt(e.currentTarget.id); //获取当前的商品的索引值
    let car = that.data.car; //购物车所有的商品数据
    let num = car[index].num; //获取购买数量
    num = num + 1; //将购买数量 +1
    car[index].num = num; //更改当前商品的数量
    that.setData({
      car: car //更新商品数据
    });
    that.getTotalPrice(); //重新计算总价格
  },
  // 减少按钮被点击
  reduceButtonClick: function (tap) {
    var that = this;
    let index = parseInt(tap.currentTarget.id);
    let car = that.data.car[index];
    let num = car.num; //获取购买数量
    if (num == 1) { //判断是否等于1
      wx.showModal({
        title: '提示',
        content: '确定将  ' + car.name + '  移出购物车吗？',
        success: function (sm) {
          if (sm.confirm) {
            var tempData = that.data.car; //所有商品数据
            tempData.splice(index, 1); //从当前索引值开始删除1项数据
            that.setData({
              car: tempData //更新数据
            })
          } else if (sm.cancel) {
            return false;
          }
        }
      })
    } else { //如果商品数量不等于 1                                 
      var car_2 = that.data.car;
      var num2 = num - 1;
      car_2[index].num = num2;
      this.setData({
        car: car_2
      });

    }
    that.getTotalPrice(); //重新计算总价格
  },
  /*checkbox 选中或未选中都会触发该事件*/
  checkboxChange: function (e) {
    var that = this;
    that.setData({
      all_shop: e.detail.value,
    })
  },
  //删除单个商品
  deleteGoods(e) {
    const index = e.currentTarget.dataset.index;
    let carts = this.data.car;
    wx.showModal({
      title: '温馨提示',
      content: '确定删除当前商品吗？',
      confirmColor: "#f00",
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({
            title: '加载中'
          });
          carts.splice(index, 1);
          this.updateCarts(carts);
          //更新总价
          this.getTotalPrice();
          wx.hideLoading();
        }
      }
    })
    wx.removeStorageSync('car')

  },
  //更新数据函数
  updateCarts(data) {
    this.setData({
      car: data
    })
  },
  /*点击结算 */
  toBuy: function (e) {
    console.log(this.data.car);
    var that = this;
    let good = this.data.car; //所有商品数据
    if (that.data.total_pirce == 0) { //判断是否选择了商品，这里我是判断总价格
      wx.showToast({
        title: '请选择商品',
      })
    } else {
      for (var i = 0; i < this.data.car.length; i++) { //循环购物车中的商品
        if (good[i].checks == true) {
          var good_one1 = good[i]
          this.data.good_one.push(good_one1)
        }
        console.log(good_one1);
      }
    }
    wx.setStorageSync('car2', this.data.good_one)
  },
  /**点击全选 */
  setChecked: function () {
    let checked = this.data.checked; //是否为全选状态
    checked = !checked; //改变状态
    let car = this.data.car;
    for (let i = 0; i < car.length; i++) {
      car[i].checks = checked; // 改变所有商品状态
    }
    this.setData({
      checked: checked, //更新全选状态
      car: car //更新所有商品的状态
    });
    this.getTotalPrice(); //重新获取总价格
  },
  /**点击单个多选框 */
  allCheckbox: function (tap) {
    var a = 0 //设置初始总价格
    var index = tap.currentTarget.dataset.index //获取索引值
    let good = this.data.car //获取购物车列表
    const checks = good[index].checks; //获取当前商品的选中状态
    good[index].checks = !checks //改变当前商品的状态
    this.setData({
      car: good
    });
    this.getTotalPrice() //重新获取总价格
    /*设置全选 */
    for (let i = 0; i < good.length; i++) {
      a += good[i].num * good[i].price
    }
    if (this.data.total_pirce == a) {
      this.setData({
        checked: true
      })
    } else {
      this.setData({
        checked: false
      })
    }
  },
  /**计算总价格  */
  getTotalPrice() {
    let good = this.data.car; // 获取购物车列表
    let total = 0;
    for (let i = 0; i < good.length; i++) { // 循环列表得到每个数据
      if (good[i].checks) { // 判断选中才会计算价格
        total += good[i].num * good[i].price; // 所有价格加起来
        console.log(total)
      }
    }
    this.setData({ // 最后赋值到data中渲染到页面
      car: good,
      total_pirce: total.toFixed(2),
    });
  },

})